Handwriting recognition systems are being developed to allow users to input handwritten data into a computer. An electronic tablet allows a user to hand write data that the computer can recognize. The user writes data on the electronic tablet with a special pen. As the user moves the pen across the tablet, the tablet displays "ink." The tablet senses the position of the pen as the user writes and sends the position data to the computer. The computer receives this position data and converts it to recognized symbols, such as letters or numbers, in a convenient format, such as ASCII format. The computer then processes the formatted characters.
Some handwriting recognition systems recognize not only characters, letters and punctuation, but also gestures. Gestures are handwritten symbols that are typically used to represent editing commands or to produce non-printing text. For example, a handwritten backslash over a letter may mean delete the letter, a caret in between two letters may mean insert text, or a vertical line with an arrow to the left may mean insert a carriage return. Gestures are used extensively when printed documents are edited. During recognition, these gestures are converted to a convenient format for use by the computer.
These handwriting recognition systems use algorithms to map handwritten data to symbols. Typically, these systems internally store a prototype for each symbol that can be recognized. A prototype is a "picture" of a handwritten symbol that is used to map handwriting to a symbol. A system that recognizes just capital letters may have only 26 prototypes: one for each capital letter. Recognition systems use recognition algorithms to map handwritten data to a prototype. As long as the user writes like the prototypes, the handwritten data is successfully recognized. Conversely, the more dissimilar the handwritten data and the prototype are, the more likely it is that the handwritten data will be misrecognized. Misrecognition is typically due to the differences in user handwriting styles and legibility of the handwriting. For example, the handwritten word "dear" may be misrecognized as the word "clear" depending the way the user writes a "d" and the prototypes for the letters "d," "c," and "l."
A recognizer is that part of the recognition system that implements a recognition algorithm. Recognizers can be trainable or non-trainable. A non-trainable recognizer has a fixed set of prototypes (none can be added or modified). If a recognizer does not correctly recognize a user's handwriting, the non-trainable recognizer cannot be made to adapt to the user's handwriting. Rather, the user has to adapt to the prototype of the recognizer for recognition to occur. A trainable recognizer, on the other hand, allows the user to specify the handwritten data that corresponds to a symbol. For example, during training a recognizer may display a typewritten "A" and prompt the user to input a handwritten "A." The recognizer trains by modifying the prototype associated with the letter "A" or adding another prototype for the letter "A." Typically, a new user will have to train the recognizer before starting recognition. The recognizer may display each symbol that it can recognize and prompt the user to input the corresponding handwritten data. The user typically writes the handwritten data for each symbol within a rectangular field called a box. The recognizer then trains and is ready to recognize. While the user is writing to an application program, miscrecognition may still occur. To train the recognizer on the misrecognized symbol, the user exits the application and invokes recognizer training. The user indicates which symbol the user wants to train on and hand writes the corresponding data in a box. The recognizer then trains and the user is free to go back to the application program and try again.
These training techniques are not satisfactory, however. First, training is done in a artificial environment. Users tend to write carefully and neatly when writing a single symbol in a box during training and tend to write carelessly and not neatly when writing words and sentences. Thus, the prototypes in the recognizer may not accurately represent the symbols that are written during data entry for an application program. Second, when the user goes to train on a misrecognized character, the user reenters the handwritten data that was misrecognized. The user may not do a very good job of rewriting this misrecognized data. Thus, the recognizer is trained on handwritten data that is different from the misrecognized data. Third, trainers typically require a one-to-one correspondence between a symbol and the handwritten data in a box. However, a user may use different writing styles for a letter depending on the context. For example, a user may write the letter "h" one way when it begins a word and another way when it follows the letter "t" When it follows a "t" the user may write the vertical part of the "t" and when crossing the "t" continue in the same stroke to make the letter "h." Thus, the "h" is a continuation of the cross in the letter "t." (A stroke refers to all the ink that is written starting with a pen down and ending with a pen up.) Fourth, the user interface for the trainer tends to be recognizer dependent. Thus, if a new recognizer is developed the user needs to learn the new user interface. Also, the expense of developing a recognizer includes the cost of developing a new trainer.